Delphi 8 a VCL.NET

Otázka od: Zbysek Hlinka

8. 1. 2004 21:47

Ahoj,

tak jsem pro ciste svedomi udelal zbezny test chovani peogramu
napsanych v D8. Zde jsou prvni vysledky:

Nejdrive VCL.NET
Proti tomu, co bylo predstaveno v D7, je zde preci jen rozdil.
Testoval jsem spolupraci s moduly napsanymi v C# - zda je mozne dedit
tridy mezi sebou. Vyrobil jsem dll s VCL, nechal jsem podedit
vzajemne mezi C# a D8, a chodilo to. Na strane predka jsem zalozil
library, na strane potomka byl exac se zvlastni tridou (na obe
strany). Pro ilustraci:

C# kod, predek, library:

using System;
using System.Windows.Forms;

namespace PokusLib
{
  public class Pokus
  {
    public string Kuku()
    {
      return "Kukuc";
    }
  }
}

----------------------------
Dedeni v D8, exac:

unit Class3;

interface

uses
  PokusLib;

type
  TClass3 = class(Pokus)
  private
  public
    constructor Create;
  end;

implementation

constructor TClass3.Create;
begin
  inherited Create;
end;

end.

---------------------

Zkousel jsem to i obracene, a v teto trivialni podobe to fungovalo na
obe strany. Timto se tedy Borlandu omlouvam za neduveru, kterou jsem
porojevoval drive. Funguje to lepe, nez jsem puvodne ocekaval. Myslim
tedy, ze v podstate je mozne VCL.NET pouzit jako prechod k cistemu
.NET, aspon na teto urovni.

JENZE

Zkousel jsem i dalsi veci, a to napriklad dedeni formularu. Zalozil
jsem si C# assembly (tedy dll library) a v ni formular. Dale jsem
zalozil WinForms aplikaci v D8 (tedy .NET exac), a zkusil podedit
formular z C#. Pri vizualnim navrhu se mi potomek zobrazil, avsak
nesel prelozit. Pokud mate nekdo moznost toto vyzkouset, zajimal by
me vysledek.

V C# mam nejakou takovouto tridu:
namespace PokusLib
...
public class FormTest : System.Windows.Forms.Form

V D8 jsem to pak dedil takto:
uses
  ..., PokusLib;
...
  TWinForm = class(FormTest)

Ne ze by se jednalo o fatalni nedostatek, ktery by cinil D8
nepouzitelnym, ale pokud je to skutecne chyba Delphi a ne moje, pak
to v poradku neni.

Dalsi VYHRADY k D8

Pokud zakladam library, nacpe se tam automaticky VCL. Tohle povazuju
za systemovou chybu, melo by to byt obracene - standardne .NET
library, a na vyzadani VCL. A to proto, ze VCL je navrzeno HURE nez
.NET. D8 by melo programatory prioritne vest k cilovemu psani cistych
.NET aplikaci, a ne VCL hybridu. Pokud se rozhodnete jit do .NET, pak
jedine tak, ze v cilovem stavu budete mit cistou .NET aplikaci, bez
VCL (nevidim zadny duvod to tahat nekolik dalsich verzi s sebou).

Proti VS v D8 POSTRADAM DataSet navrhar. Jestli tam je, nenasel jsem
ho. Kdo nezna VS - jedna se o XML strukturu datoveho modelu, ktery je
mozne pouzit jak pro nacitani dat z DB, tak i pro ukladani dat do
nejakeho XML nebo cokoliv dalsiho datoveho, a generuje to zdojovy kod
pro pristup ke strukture. Lze to v podstate pouzit ajko off-line
databazi. Zkratka je to vec, bez ktere si uz neumim predstavit svuj
programatorsky zivot.   Jestlize to v D8 skutecne neni, pak pro
sebe nevidim duvod ho pouzivat.

Tot prozatim vse.

S pozdravem

Zbysek Hlinka
E-mail: hlinka zavin. hlinka.cz
Phone: +420 603 551 282